package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/micro/go-micro/registry"
	"github.com/micro/go-micro/web"
	"github.com/micro/go-plugins/registry/consul"
	"goMicro/day03/models"
	"goMicro/day03/prodService"
)

func main () {
	//注册 consul
	consulReg := consul.NewRegistry(
		registry.Addrs("127.0.0.1:8500"),
	)
	// gin
	router := gin.Default()
	v1Group :=router.Group("/v1")
	{
		v1Group.Handle("POST","/prods",func (content *gin.Context){
			//  绑定参数，传递一个size 参数
			//var pr helper.ProdRequest
			//err:= content.Bind(pr)
			//if err!=nil || pr.Size<=0{
			//	pr=helper.ProdRequest{Size:3}
			//}
			//content.JSON(200,gin.H{
			//	"data":prodService.NewProdList2(pr.Size),
			//	//"status":"",
			//})
			// 使用proto生成的go
			var pr models.ProdRequest
			err:= content.Bind(&pr)// 用于接收参数
			fmt.Println("---请求接收的参数：", pr)
			if err!=nil || pr.Size<=0{
				pr=models.ProdRequest{Size:3}
			}
			content.JSON(200,gin.H{
				"data":prodService.NewProdList2(int(pr.GetSize())),
				//"status":"",
			})

		})

	}

	server := web.NewService(
		web.Name("prodService"),// 服务名
		web.Address(":8001"),//端口
		web.Handler(router), // 路由
		web.Registry(consulReg),// 注册组件
	)
	server.Run()

	//  使用命令行参数
	//server := web.NewService(
	//	web.Name("prodService"),// 服务名
	//	//web.Address(":8001"),// 端口通过命令行参数指定
	//	web.Handler(router), //处理器
	//	web.Registry(consulReg),// 注册组件
	//)
	//server.Init() //命令行参数
	//server.Run()
	// 命令 ：
	//  go run prod_main.go  --server_address :8001
    //	go run prod_main.go  --server_address :8002
    //  以上2个服务都是 prodService 服务，只不过是2个实例
    // 通过指定不同端口，可以注册相同名称服务的多个实例

}

